Technical Field
This disclosure relates to graphical processing units (GPUs), and more particularly, relates to structures and techniques allowing for efficient execution of multiple GPU commands.
Description of the Related Art
GPUs can be used to execute a variety of computing tasks. A GPU can calculate pixels to be displayed on a screen, for example, and may also perform other intensive operations such as animation rendering and general vector math.
A GPU may sometimes experience “down time” (stall periods) in which one or more execution units do not perform any calculations. Down time can occur when accessing memory, for example, because an execution unit is waiting for new data to arrive. Thus, at times, one or more GPU execution units may be idle.
Further, when a first program is being executed by a GPU, a second program may have to wait. The second program may have to wait even while the first program is stalled (such as during a memory access). Although it would be advantageous for the second program to use idle GPU execution units while the first program is stalled, the overhead cost of switching to the second program may be prohibitively expensive. That is, setting up the GPU to execute the second program while the first program is stalled may take so much time and effort (i.e., power consumption) that it is not worth the trouble. While the first program stalls, GPU execution units may thus remain idle.
Accordingly, GPU execution may be inefficient, especially in environments where multiple computing tasks are being performed.